/**
 * 解析富文本，提取视频标签，拆分内容为数组（文本块/视频块）
 * @param {string} html - 原始富文本字符串
 * @returns {Array} - 拆分后的数组：[{type: 'text', content: '...'}, {type: 'video', src: '...'}]
 */
export function parseRichTextWithVideo(html) {
	if (!html) return [];

	// 正则匹配 <video> 标签（含所有属性）
	const videoReg = /<video\s+[^>]*src="([^"]+)"[^>]*>/gi;
	const result = [];
	let lastIndex = 0;
	let match;

	// 循环提取所有视频标签
	while ((match = videoReg.exec(html)) !== null) {
		const videoTag = match[0]; // 完整的 <video> 标签
		const videoSrc = match[1]; // 视频 src
		const beforeText = html.slice(lastIndex, match.index); // 视频前的富文本内容

		// 1. 添加视频前的富文本块
		if (beforeText.trim()) {
			result.push({
				type: 'text',
				content: beforeText
			});
		}

		// 2. 提取视频的宽高属性（可选，无则用默认值）
		const widthReg = /width="([^"]+)"/i.exec(videoTag);
		const heightReg = /height="([^"]+)"/i.exec(videoTag);
		const posterReg = /poster="([^"]+)"/i.exec(videoTag); // 视频封面

		// 3. 添加视频块
		result.push({
			type: 'video',
			src: videoSrc,
			width: widthReg ? widthReg[1] : '100%', // 默认宽度100%
			height: heightReg ? heightReg[1] : '225px', // 默认高度（16:9比例）
			poster: posterReg ? posterReg[1] : '' // 封面图（无则用视频首帧）
		});

		// 更新最后匹配位置
		lastIndex = videoReg.lastIndex;
	}

	// 4. 添加剩余的富文本内容
	const remainingText = html.slice(lastIndex);
	if (remainingText.trim()) {
		result.push({
			type: 'text',
			content: remainingText
		});
	}

	return result;
}